iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0
Modern Web

現在就學Node.js系列 第 7

Node.js 之 fs 檔案系統 - Day7

  • 分享至 

  • xImage
  •  

昨天我們學了 path 模組,今天要進一步進入 Node.js 的核心功能之一:檔案系統 (File System, fs)

透過 fs模組,我們能讓 JavaScript 直接操作電腦上的檔案與資料夾,

從而打造自動化工具、檔案管理程式,甚至伺服器日誌系統。

fs 的功能

Node.js 不只是拿來跑伺服器,它也能處理 檔案 I/O(Input / Output):

  • 讀取設定檔或 JSON 資料
  • 寫入結果到檔案中
  • 建立、刪除或搬移檔案與資料夾
  • 檢查檔案狀態
  • 監控檔案變動

這些操作,在日常開發與專案維護中都非常實用。

三種 API 操作

Node.js fs 提供三種方式來操作檔案:

1. Callback (傳統非同步)

const fs = require("fs");

fs.readFile("test.txt", "utf8", (err, data) => {
  if (err) {
    console.error("讀檔失敗:", err);
    return;
  }
  console.log("檔案內容:", data);
});

2. Promise (推薦)

import * as fsp from "fs/promises";

try {
  const data = await fsp.readFile("test.txt", "utf8");
  console.log("檔案內容:", data);
} catch (err) {
  console.error("讀檔失敗:", err);
}

👉 結合 async/await,程式碼最乾淨。

3. 同步 (Sync)

const fs = require("fs");

try {
  const data = fs.readFileSync("test.txt", "utf8");
  console.log("檔案內容:", data);
} catch (err) {
  console.error("讀檔失敗:", err);
}

👉 適合 CLI 工具或初始化,不適合伺服器環境。

一﹑檔案讀寫操作

讀取檔案

import * as fsp from "fs/promises";

const text = await fsp.readFile("notes.txt", "utf8");
console.log("檔案內容:", text);

覆寫檔案

await fsp.writeFile("output.txt", "Hello Node.js!");
console.log("檔案已寫入完成");

追加內容

await fsp.appendFile("output.txt", "\n追加一行內容");
console.log("內容已追加完成");

二、檔案資訊

想知道檔案大小、修改時間、是否存在?

const stat = await fsp.stat("notes.txt");
console.log("大小:", stat.size, "bytes");
console.log("最後修改時間:", stat.mtime);
console.log("是否為檔案?", stat.isFile());

try {
  await fsp.access("notes.txt");
  console.log("檔案存在且可存取");
} catch {
  console.log("檔案不存在或無權限");
}

三、目錄操作

建立目錄

await fsp.mkdir("logs", { recursive: true });
console.log("logs 資料夾建立完成");

列出資料夾內容

const files = await fsp.readdir("data");
console.log("data 資料夾內檔案:", files);

重新命名或移動檔案

await fsp.rename("old.txt", "new.txt");
console.log("檔案已重新命名");

刪除檔案

await fsp.unlink("temp.txt");
console.log("檔案已刪除");

刪除資料夾

await fsp.rmdir("logs");
console.log("資料夾已刪除");

小結

今天學習了:

  • fs 的三種 API 風格:Callback、Promise、Sync
  • 檔案讀寫:readFilewriteFileappendFile
  • 檔案資訊:stataccess
  • 目錄操作:mkdirreaddirrenameunlinkrmdir
  • 小實作:文字檔字數分析器

這些功能讓 Node.js 能夠處理各種檔案相關需求,是自動化工具與伺服器應用的基礎。


上一篇
Path 模組 — 檔案路徑處理全攻略 - Day6
系列文
現在就學Node.js7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言